package gdut.edu.demo02;

/**
 * @Description 队列
 * @Author JiaFu
 * @Date 2022/7/6 16:29
 */
public class MyQueue {
    private int[] elements;

    public MyQueue() {
        this.elements = new int[0];
    }

    //    入队
    public void add(int element) {
//        创建新数组，长度为旧数组长度+1
        int[] newArr = new int[this.elements.length + 1];
//        将旧数组元素复制到新数组
        for (int i = 0; i < this.elements.length; i++) {
            newArr[i] = this.elements[i];
        }
//        在新数组末尾添加元素element
        newArr[newArr.length - 1] = element;
//        新数组替换旧数组
        this.elements = newArr;
    }

    //    出队
    public int poll() {
//        判断队列是否为空
        if (this.elements.length == 0) {
            throw new RuntimeException("队列为空");
        }
//        队列不为空取出数组中第0个元素
        int element = this.elements[0];
//        创建新数组，长度为旧数组长度-1
        int[] newArr = new int[this.elements.length - 1];
//        将旧数组第0个元素后面所有元素复制到新数组
        for (int i = 0; i < newArr.length; i++) {
            newArr[i] = this.elements[i + 1];
        }
//        新数组替换旧数组
        this.elements = newArr;
//        返回旧数组第0个元素
        return element;
    }

    //    判断队列是否为空
    public boolean isEmpty() {
        return this.elements.length == 0;
    }
}
